package uiMain.menuconsola;

import gestorHotel.Hotel;
import gestorHotel.habitacion.TipoEstadoHabitacion;
import gestorHotel.reserva.LineaReserva;
import gestorHotel.reserva.Reserva;
import gestorHotel.reserva.TipoEstadoReserva;

import java.util.Scanner;

public class OpcionDeMenuSalidaCliente extends OpcionDeMenu {

	public void ejecutar() {
		Scanner in = new Scanner(System.in);
		String h = seleccionarHotel();
		
		Hotel hotel = Main.hoteles.get(h);
		
		Reserva reserva = null;
		for (Reserva r : hotel.getReservas().values()) {
			if (r.getEstado() != TipoEstadoReserva.ACTIVA)
				continue;
			if (!r.getUsuario().equals(Main.usuario.getUsuario()))
				continue;
			reserva = r;
			break;
		}
		
		if (reserva == null) {
			System.out.println("Usted no está alojado en el hotel!");
			return;
		}
		
		System.out.println("Generando factura...");
		String factura = reserva.generarFactura(h);
		
		System.out.println(factura);
		
		Main.hoteles.get(h).getReservas().get(reserva.getCodReserva()).setEstado(TipoEstadoReserva.CERRADA);

		for (LineaReserva linea : reserva.getLineas()) {
			Main.hoteles.get(h).getHabitaciones().get(linea.getHabitacion()).setEstado(TipoEstadoHabitacion.LIBRE);
			Main.hoteles.get(h).getHabitaciones().get(linea.getHabitacion()).setMinutosInternacionales(0);
			Main.hoteles.get(h).getHabitaciones().get(linea.getHabitacion()).setMinutosInternet(0);
			Main.hoteles.get(h).getHabitaciones().get(linea.getHabitacion()).setMinutosNacionales(0);
			
			for (int i = 0; i < Main.hoteles.get(h).getHabitaciones().get(linea.getHabitacion()).getMinibar().size(); ++i) {
				Main.hoteles.get(h).getHabitaciones().get(linea.getHabitacion()).getMinibar().get(i).setCantidad(0);
			}
		}
		
		System.out.println("Vuelva pronto!");
	}

	public String getDescripcion() {
		return "Salida del cliente.";
	}

}
